﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Sige
{
    class comisiones
    {
        string      comision;
        string      codigocurso;
        DateTime    fechainicio;
        DateTime    fechafin;
        string      aula;
        char        turno;
        char        estado;

        public string m_comision
        {
            get { return comision; }
            set { comision = value; }
        }

        public string m_codigocurso
        {
            get { return codigocurso; }
            set { codigocurso = value; }
        }

        public DateTime m_fechainicio
        {
            get { return fechainicio; }
            set { fechainicio = value; }        }

        public DateTime m_fechafin
        {
            get { return fechafin; }
            set { fechafin = value; }
        }


        public string m_aula
        {
            get { return aula; }
            set { aula = value; }
        }

        public char m_turno
        {
            get { return turno; }
            set { turno = value; }
        }

        public char m_estado
        {
            get { return estado; }
            set { estado = value; }
        }


        //Constructor vacio, sin parametros iniciales

        public comisiones()
        {
        }

        public comisiones(string v_codigocomision)
        {
            comision = v_codigocomision;
        }

        public void ObtenerComisionesActivas(ref DataSet ds, ref SqlConnection cn_superbit, ref string valorcodigo)
        {

            if (cn_superbit.State == ConnectionState.Closed)
                cn_superbit.Open();
            try
            {
                SqlCommand cmd = new SqlCommand("sp_ObtenerComisionesActivas", cn_superbit);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                cmd.Parameters.Add("@codigocurso", SqlDbType.VarChar, 4);
                cmd.Parameters["@codigocurso"].Value = valorcodigo;
                da.Fill(ds, "comisionesActivas");
            }
            catch (Exception ex)
            { MessageBox.Show("Error comuniquese con Area Sistemas"); }
            cn_superbit.Close();
        }


        public void cargarGrillaComisionesActivas(ref string codigocurso, ref DataSet ds, ref SqlConnection cn_superbit, ref DataGridView dgvComisionesActivas, ref TextBox txtcodigocomision, ref Button btnConfirmarBaja)
        {
            try
            {
                ds.Tables["comisionesActivas"].Clear(); // si es la primera vez que carga combobox tiraria error porque que existe la datatable cursos*/
            }
            catch { }
            ObtenerComisionesActivas(ref ds, ref cn_superbit, ref codigocurso);
            cn_superbit.Close();
            if (ds.Tables["comisionesActivas"].Rows.Count > 0)  //tiene datos
            {
                dgvComisionesActivas.Visible = true;
                dgvComisionesActivas.DataSource = ds.Tables["comisionesActivas"];
            }
            else
            {
                dgvComisionesActivas.Visible = false;
                txtcodigocomision.Text = "";
                btnConfirmarBaja.Enabled = false;
                MessageBox.Show("No existen cursos activos");

            }
        }

        public void Baja(ref SqlConnection cn_superbit, ref DataGridView dgvComisionesActivas, ref TextBox txtcodigocomision, ref Button btnConfirmarBaja)
        {

            if (cn_superbit.State == ConnectionState.Closed)
                cn_superbit.Open();

            SqlCommand cmd = new SqlCommand("sp_BajaComision", cn_superbit);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            cmd.Parameters.Add("@codigocomision", SqlDbType.VarChar, 5);
            cmd.Parameters["@codigocomision"].Value = this.comision;
            cmd.ExecuteNonQuery();
            try
            {
                int filas = cmd.ExecuteNonQuery();
                if (filas > 0)
                {

                    BorrarDatosFormularioBajas(ref  dgvComisionesActivas, ref  txtcodigocomision, ref btnConfirmarBaja);
                    MessageBox.Show("Baja curso realizada");
                }
                else { MessageBox.Show("La baja no pudo realizarse"); }

            }

            catch
            { }

            cn_superbit.Close();

        }

        public void BorrarDatosFormularioBajas(ref DataGridView dgvComisionesActivas, ref TextBox txtCodigoComision, ref Button btnConfirmarBaja)
        {
            dgvComisionesActivas.Visible = false;
            txtCodigoComision.Text = "";
            btnConfirmarBaja.Enabled = false;

        }

        public bool buscarComision(ref string codigocomision,ref SqlConnection cn_superbit,ref DataSet ds)
        {

            if (cn_superbit.State == ConnectionState.Closed) 
                cn_superbit.Open();
            try
            {
                string clausula = "select a.comision,a.codigocurso,a.fechainicio,a.fechafin,a.aula,a.turno,b.nombrecurso from comisiones a inner join curso b  on (a.codigocurso=b.codigo) where a.comision=" + codigocomision + "and a.estado < 3";
                SqlCommand cmd = new SqlCommand(clausula, cn_superbit);
                cmd.CommandType = CommandType.Text;
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                try
                {
                    ds.Tables["comision"].Rows.Clear();
                }
                catch { }
                da.Fill(ds, "comision");
                cn_superbit.Close();
                if (!(ds.Tables["comision"].Rows.Count > 0))
                {
                    MessageBox.Show("No existe el codigo comision ingresado");
                    cn_superbit.Close();
                    return false;
                }
               
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error comuniquese con Area Sistemas");
                cn_superbit.Close();
                return false;
            }
            cn_superbit.Close();
            return true;
        }

      
        public bool ObtenerComisionDeDataset(ref DataSet ds )
        {
            try
            {
                this.comision = ds.Tables["comision"].Rows[0][0].ToString();
                this.codigocurso = ds.Tables["comision"].Rows[0][1].ToString();
                this.fechainicio = Convert.ToDateTime(ds.Tables["comision"].Rows[0][2]);
                this.fechafin = Convert.ToDateTime(ds.Tables["comision"].Rows[0][3]);
                this.aula = ds.Tables["comision"].Rows[0][4].ToString();
                this.turno = Convert.ToChar(ds.Tables["comision"].Rows[0][5]);
                 
                
            }
            catch { return false; }
            return true;
        }
     
        public string ObtenerVacantesComision(ref SqlConnection cn_superbit,ref DataSet ds)    
        {
        if (cn_superbit.State == ConnectionState.Closed)
            cn_superbit.Open();
        
           string vacantes ="00";
           try
        {
            ds.Tables["vacantes"].Rows.Clear();// si es la primera vez que carga tiraria error porque que existe la datatable cursos*/
        }
        catch { }
            SqlCommand cmd = new SqlCommand("sp_obtenerVacantesComision", cn_superbit);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            cmd.Parameters.Add("@codigocomision", SqlDbType.VarChar, 5);
            cmd.Parameters["@codigocomision"].Value = this.comision;
             da.Fill(ds, "vacantes");
             cn_superbit.Close();
             if ( (ds.Tables["vacantes"].Rows.Count > 0))
             {
                 cn_superbit.Close();
                 vacantes =  (ds.Tables["vacantes"].Rows[0][0].ToString()) ;
                           
             }
            cn_superbit.Close();
            return vacantes; 
            }

      
        public string obtenerNroMatricula(ref SqlConnection cn_superbit,ref DataSet ds)
        {
            if (cn_superbit.State == ConnectionState.Closed)
                cn_superbit.Open();

            string nroMatricula = " ";
            string clausula = "select max(matricula)+10 from alumnosporcomision ";
            SqlCommand cmd = new SqlCommand(clausula, cn_superbit);
            cmd.CommandType = CommandType.Text;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            try
            {
                ds.Tables["matricula"].Rows.Clear();
            }
            catch { }
            da.Fill(ds, "matricula");
            cn_superbit.Close();
            if (!(ds.Tables["matricula"].Rows.Count > 0))
            {
                MessageBox.Show("Error no pudo generarse matricula");
                cn_superbit.Close();
            }
            else
            {   nroMatricula = ds.Tables["matricula"].Rows[0][0].ToString();
                
            }
            return nroMatricula;
        }

         public void buscoaula(ref SqlConnection cn_superbit, ref DataSet ds)
        {
            if (cn_superbit.State == ConnectionState.Closed)
                cn_superbit.Open();

            string clausula = "select codigo from aulas ";
            SqlCommand cmd = new SqlCommand(clausula, cn_superbit);
            cmd.CommandType = CommandType.Text;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            try
            {
                ds.Tables["aulas"].Rows.Clear();
            }
            catch { }
                       
            da.Fill(ds, "aulas");
            cn_superbit.Close();
        }
    }
}

